package com.detection.common.domain;

import com.detection.common.utils.spring.BeanUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author LH
 * @date 2022/10/20 17:31
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class YqCameraInfo {

    //唯一编码
    private String indexCode;

    /**
     * 营区编码
     */
    private String campCode;

    /**
     * 营区名称
     */
    private String campName;

    /**
     * 海康系统中该园区编码
     */
    private String parkRegionIndex;

    //资源类型
    private String resourceType;
    //监控点国标编号
    private String externalIndexCode;
    //资源名称
    private String name;
    //通道号，为级联监控点时，该字段为空；
    //本级监控点时，该字段非空
    private Integer chanNum;
    //级联编号
    private String cascadeCode;
    //父级资源编号
    private String parentIndexCode;
    //经度，精确到小数点后8位
    private String longitude;
    //纬度，精确到小数点后8位
    private String latitude;
    //海拔高度，单位：米
    private String elevation;
    //监控点类型
    //枪机0
    //半球1
    //快球2
    //带云台枪机3
    private Integer cameraType;
    //能力集
    private String capability;
    //录像存储位置
    private String recordLocation;
    //通道子类型，
    //模拟通道analog
    //数字通道digital
    //镜像通道mirror
    //录播通道record
    //零通道zero
    private String channelType;
    //所属区域
    private String regionIndexCode;
    //所属区域路径,以@符号分割，包含本节点
    private String regionPath;
    //	传输协议，
    //0：UDP，
    //1：TCP
    private Integer transType;
    //接入协议，
    private String treatyType;
    //安装位置
    private String installLocation;
    //创建时间
    private String createTime;
    //更新时间
    private String updateTime;
    //数据在界面上的显示顺序
    private Integer disOrder;
    //资源唯一编码
    private String resourceIndexCode;
    //解码模式
    private String decodeTag;
    //监控点关联对讲的唯一标志
    private String cameraRelateTalk;
    //所属区域路径，由唯一标示组成，最大10级，格式： @根节点@子区域1@子区域2@
    private String regionName;
    //区域路径名称，"/"分隔
    private String regionPathName;

    //摄像头状态
    private String status;

    /**
     * 点位信息
     */
    private String coordinates;

    /**
     * 仅用于视频监控策略中标记摄像头已被选中
     */
    private String isSelect;

    private String deviceCode;

    /** 支持算法（项目内算法） */
    @ApiModelProperty("支持算法")
    private String supportAlgorithms;

    /** 是否为周界设备（1为是，0为否） */
    @ApiModelProperty("是否为周界设备")
    private Long isPerimeter;

    private String streamUrl;

    public YqCameraInfo copy(){
        YqCameraInfo info = new YqCameraInfo();
        BeanUtils.copyProperties(this,info);
        return info;
    }
}
